package com.ruoyi.trainingManagement.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 培养计划课程明细对象 training_program_courses
 *
 * @author chenxl
 * @date 2025-04-16
 */

public class trainingProgramCourses extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private String id;

    public Long getCourseCharacter() {
        return courseCharacter;
    }

    public void setCourseCharacter(Long courseCharacter) {
        this.courseCharacter = courseCharacter;
    }

    /** 培养计划ID */
    @Excel(name = "培养计划ID")
    private String trainingProgramId;

    /** 课程类型 */
    @Excel(name = "课程类型")
    private Long courseCharacter;

    /** 课程ID */
    @Excel(name = "课程ID")
    private String courseId;

    /** 是否需要选课 */
    @Excel(name = "是否需要选课")
    private Long electiveSystem;

    /** 总学时 */
    @Excel(name = "总学时")
    private Long totalHours;

    /** 学分 */
    @Excel(name = "学分")
    private Long credits;

    /** 授课方式 */
    @Excel(name = "授课方式")
    private Long teachingMethod;

    /** 考试方式 */
    @Excel(name = "考试方式")
    private Long examMethod;

    /** 是否必修 */
    @Excel(name = "是否必修")
    private Long isRequired;

    /**开课学期*/
    @Excel(name = "开课学期")
    private Long semester;
    /**年级*/
    @Excel(name = "年级")
    private Long grade;

    @Excel(name = "状态")
    private Integer status;

    @Excel(name = "班级数量")
    private Long numberClasses;

    @Excel(name = "班级最大人数")
    private Long numberStudents;

    public Long getGrade() {
        return grade;
    }

    public void setGrade(Long grade) {
        this.grade = grade;
    }

    /** 记录创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 记录更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "记录更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /*is_cross_semester、tinyint、是否跨学期*/
    @Excel(name = "是否跨学期")
    private Integer isCrossSemester;

    /*cross_semester_count、int、开课学期数*/
    @Excel(name = "开课学期数")
    private Long crossSemesterCount;

    /*accomplish_semester_count、已完成学期数*/
    @Excel(name = "已完成学期数")
    private Long accomplishSemesterCount;

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }

    public void setTrainingProgramId(String trainingProgramId)
    {
        this.trainingProgramId = trainingProgramId;
    }

    public String getTrainingProgramId()
    {
        return trainingProgramId;
    }

//    public void setcourseCharacter(Long courseCharacter)
//    {
//        this.courseCharacter = courseCharacter;
//    }
//
//    public Long getcourseCharacter()
//    {
//        return courseCharacter;
    //   }

    public void setCourseId(String courseId)
    {
        this.courseId = courseId;
    }

    public String getCourseId()
    {
        return courseId;
    }

    public void setElectiveSystem(Long electiveSystem)
    {
        this.electiveSystem = electiveSystem;
    }

    public Long getElectiveSystem()
    {
        return electiveSystem;
    }

    public void setTotalHours(Long totalHours)
    {
        this.totalHours = totalHours;
    }

    public Long getTotalHours()
    {
        return totalHours;
    }

    public void setCredits(Long credits)
    {
        this.credits = credits;
    }

    public Long getCredits()
    {
        return credits;
    }

    public void setTeachingMethod(Long teachingMethod)
    {
        this.teachingMethod = teachingMethod;
    }

    public Long getTeachingMethod()
    {
        return teachingMethod;
    }

    public void setExamMethod(Long examMethod)
    {
        this.examMethod = examMethod;
    }

    public Long getExamMethod()
    {
        return examMethod;
    }

    public void setIsRequired(Long isRequired)
    {
        this.isRequired = isRequired;
    }

    public Long getIsRequired()
    {
        return isRequired;
    }

    public Long getSemester() {
        return semester;
    }

    public void setSemester(Long semester) {
        this.semester = semester;
    }

    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("trainingProgramId", getTrainingProgramId())
                .append("courseCharacter", getCourseCharacter())
                .append("courseId", getCourseId())
                .append("electiveSystem", getElectiveSystem())
                .append("totalHours", getTotalHours())
                .append("credits", getCredits())
                .append("teachingMethod", getTeachingMethod())
                .append("examMethod", getExamMethod())
                .append("isRequired", getIsRequired())
                .append("semester", getSemester())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("grade", getGrade())
                .append("status", getStatus())
                .append("numberClasses", getNumberClasses())
                .append("numberStudents", getNumberStudents())
                .append("isCrossSemester", getIsCrossSemester())
                .append("crossSemesterCount", getCrossSemesterCount())
                .append("accomplishSemesterCount", getAccomplishSemesterCount())
                .toString();
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Long getNumberClasses() {
        return numberClasses;
    }

    public void setNumberClasses(Long numberClasses) {
        this.numberClasses = numberClasses;
    }

    public Long getNumberStudents() {
        return numberStudents;
    }

    public void setNumberStudents(Long numberStudents) {
        this.numberStudents = numberStudents;
    }

    public Integer getIsCrossSemester() {
        return isCrossSemester;
    }

    public void setIsCrossSemester(Integer isCrossSemester) {
        this.isCrossSemester = isCrossSemester;
    }

    public Long getCrossSemesterCount() {
        return crossSemesterCount;
    }

    public void setCrossSemesterCount(Long crossSemesterCount) {
        this.crossSemesterCount = crossSemesterCount;
    }

    public void setAccomplishSemesterCount(Long accomplishSemesterCount) {
        this.accomplishSemesterCount = accomplishSemesterCount;
    }
    public Long getAccomplishSemesterCount() {
        return accomplishSemesterCount;
    }
}
